package com.itheima.myreflect2.Student.sreatmdemo;

import java.util.ArrayList;
import java.util.function.Consumer;

/**
 * @program: Myset
 * @description:
 * @author: xuejingjing
 * @create: 2021-06-13 00:49
 **/

//Stream流的方法终结方法
public class Mystream5 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张无忌");
        list.add("张三边");
        list.add("张接电话");
        list.add("经济的好坏");
        list.add("张电脑手机");
        list.add("大家都不");
        list.add("四百九十九");

        //void forEach(consumer action);对此流的每一个元素执行操作
        //consumer接口中的方法 void accept(T t);//对给定的参数执行此操作
        //在forEach方法的底层，他会循环获取到流中的每一个数据，
        //并循环调用accept方法，并把每一个数据传递给accept方法
        //s就一次表示流中的每一个数据
        //所以，我们只要在accept方法中，协商处理的业务逻辑就可以了。

        list.stream().forEach(
                new Consumer<String>() {
                    @Override
                    public void accept(String s) {
                        System.out.println(s);
                    }
                }
        );
        System.out.println("=========================");
        //lambda表达式的简化格式
        //是因为Consumer接口中，只有一个accept方法
        list.stream().forEach(
                (String s)->{
                    System.out.println(s);
                }
        );

        System.out.println("=========================");

        //lambda表达式还是可以进一步简化的
        list.stream().forEach(s-> System.out.println(s));

        //返回此流中的元素数
        long count = list.stream().count();
        System.out.println(count);
    }
}
